<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }

      img {
        width: 100%;
        height: 100%;
        display: block;
      }

      .box {
        width: 450px;

        margin: 50px;
        display: flex;
        flex-direction: column;

        position: relative;
      }

      .box > .show {
        width: 450px;
        height: 450px;
        border: 1px solid #333;
        position: relative;
      }

      .box > .show > .mask {
        width: 200px;
        height: 200px;
        background-color: yellow;
        opacity: 0.4;
        position: absolute;
        top: 0px;
        left: 0px;

        display: none;
      }

      .box > .list {
        width: 100%;
        flex: 1;

        display: flex;
        justify-content: flex-start;
        align-items: center;
        box-sizing: border-box;
        padding: 20px;
      }

      .box > .list > p {
        width: 54px;
        height: 54px;
        border: 1px solid #333;
        margin-right: 10px;
      }

      .box > .list > p.active {
        border-color: red;
      }

      .box > .enlarge {
        width: 400px;
        height: 400px;

        position: absolute;
        top: 0;
        left: 101%;

        background: url(./imgs/1.big.jpg) no-repeat;
        background-size: 800px 800px;
        background-position: 0 0;

        display: none;
      }
    </style>
  </head>
  <body>
    <div class="box">
      <div class="show">
        <img src="./imgs/1.jpg" alt="" />
        <div class="mask"></div>
      </div>
      <div class="list">
        <p class="active">
          <img
            src="./imgs/1.small.jpg"
            showImg="./imgs/1.jpg"
            enlargeImg="./imgs/1.big.jpg"
            alt=""
          />
        </p>
        <p>
          <img
            src="./imgs/2.small.jpg"
            showImg="./imgs/2.jpg"
            enlargeImg="./imgs/2.big.jpg"
            alt=""
          />
        </p>
      </div>
      <div class="enlarge"></div>
    </div>

    <script>
      var maskEle = document.querySelector(".box .mask");
      var showEle = document.querySelector(".show");
      var enlargeEle = document.querySelector(".enlarge");
      showEle.onmouseenter = function () {
        maskEle.style.display = "block";
        enlargeEle.style.display = "block";
        console.log(111);
      };

      showEle.onmouseleave = function () {
        maskEle.style.display = "none";
        enlargeEle.style.display = "none";
      };

      showEle.onmousemove = function (e) {
        var x = e.clientX - this.getBoundingClientRect().left;
        var y = e.clientY - this.getBoundingClientRect().top;

        var maskLeft = x - maskEle.offsetWidth / 2;
        var maskTop = y - maskEle.offsetHeight / 2;
        // 左右的极限距离
        if (maskLeft <= 0) {
          maskLeft = 0;
        }
        if (maskLeft >= showEle.offsetWidth - maskEle.offsetWidth) {
          maskLeft = showEle.offsetWidth - maskEle.offsetWidth;
        }

        //上下的极限距离
        if (maskTop <= 0) {
          maskTop = 0;
        }

        if (maskTop >= showEle.offsetHeight - maskEle.offsetHeight) {
          maskTop = showEle.offsetHeight - maskEle.offsetHeight;
        }

        // 计算放大的比例
        // 计算x轴的比例
        var numx = maskEle.offsetLeft;
        var maskWidth = showEle.offsetWidth;
        var imgWidth = document.querySelector(".enlarge").offsetWidth;
        // 计算y轴的比例
        var numy = maskEle.offsetTop;
        var maskHeight = showEle.offsetHeight;
        var imgHeight = document.querySelector(".enlarge").offsetHeight;
      };
    </script>
  </body>
</html>
